Page({
  data: {
    // 轮播图数据
    bannerList: [],
    // 热门食谱数据（场景化标签）
    hotRecipes: [],
    // 更多推荐数据
    recommendList: [],
    // 分页相关
    page: 1,
    pageSize: 6,
    loading: false,
    hasMore: true,
    // 用户信息
    userInfo: {},
    userId: null  // 确保初始值为null而非undefined
  },

  onLoad() {
    // 获取用户信息
    this.loadUserInfo();
    this.loadBannerList();
    // 加载热门食谱（场景化标签）
    this.loadHotRecipes();
    // 加载推荐数据
    this.loadRecommendData();
  },

  onShow() {
    // 页面显示时刷新数据
    this.loadBannerList(); // 刷新轮播图
    this.loadHotRecipes();
    this.loadRecommendData();
  },

  // 新增：加载轮播图（对接后端接口）
  loadBannerList() {
    wx.showLoading({
      title: '加载轮播图...',
      mask: true
    });

    // 获取token
    let token = '';
    try {
      token = wx.getStorageSync('token');
    } catch (e) {
      console.error('获取token失败', e);
    }

    // 调用菜谱列表接口获取轮播图数据
    wx.request({
      url: 'http://localhost/dev-api/recipes/recipes/list',
      method: 'GET',
      data: {
        pageNum: 1,
        pageSize: 3,  // 只获取3张轮播图
        orderByColumn: 'collect_count',  // 按收藏量排序
        isAsc: 'desc'                    // 降序排列
      },
      header: {
        'Authorization': token,
        'Content-Type': 'application/json'
      },
      success: (res) => {
        wx.hideLoading();

        if (res.data.code === 200 && res.data.rows) {
          // 处理轮播图数据
          const bannerList = (res.data.rows || []).map((recipe, index) => {
            // 根据媒体类型处理封面图
            let imageUrl = 'https://picsum.photos/800/400?random=default';
            if (recipe.mediaType === 2) {
              // 视频类型：使用videoDescription作为封面图
              imageUrl = recipe.videoDescription 
                ? `http://localhost:8080${recipe.videoDescription}` 
                : 'https://picsum.photos/800/400?random=video';
            } else if (recipe.mediaType === 1) {
              // 图片类型：使用coverUrl作为封面图
              imageUrl = recipe.coverUrl 
                ? `http://localhost:8080${recipe.coverUrl}` 
                : 'https://picsum.photos/800/400?random=image';
            }

            return {
              id: recipe.id,
              imageUrl: imageUrl,
              title: recipe.title || '美味菜谱',
              subtitle: recipe.users?.nickname ? `by ${recipe.users.nickname}` : '美食达人'
            };
          });

          this.setData({
            bannerList: bannerList
          });
        } else {
          // 如果接口失败，使用默认数据
          this.setDefaultBannerList();
        }
      },
      fail: (err) => {
        wx.hideLoading();
        console.error('获取轮播图数据失败:', err);
        // 使用默认数据
        this.setDefaultBannerList();
      }
    });
  },

  // 新增：设置默认轮播图（接口失败时降级）
  setDefaultBannerList() {
    this.setData({
      bannerList: [
        {
          id: 1,
          imageUrl: 'https://picsum.photos/800/400?random=1',
          title: '低卡韩式拌饭',
          subtitle: '减肥也要吃~'
        },
        {
          id: 2,
          imageUrl: 'https://picsum.photos/800/400?random=2',
          title: '精致甜点',
          subtitle: '美味不增重'
        },
        {
          id: 3,
          imageUrl: 'https://picsum.photos/800/400?random=3',
          title: '健康沙拉',
          subtitle: '营养又美味'
        }
      ]
    });
  },

  // 加载用户信息 - 修正userId初始化逻辑（已闭合函数）
  loadUserInfo() {
    try {
      const userInfo = wx.getStorageSync('userInfo') || {};
      // 严格校验userInfo.id是否为有效数字
      let userId = null;
      if (userInfo.id) {
        const numId = Number(userInfo.id);
        // 仅当转换后是正数才赋值
        if (!isNaN(numId) && numId > 0) {
          userId = numId;
        }
      }

      this.setData({
        userInfo: userInfo,
        userId: userId  // 确保userId是数字或null
      });
    } catch (e) {
      console.error('获取用户信息失败', e);
      // 异常时强制设为null
      this.setData({
        userId: null
      });
    }
  },

  // 加载热门食谱（场景化标签）
  loadHotRecipes() {
    wx.showLoading({
      title: '加载中...',
      mask: true
    });

    // 获取token
    let token = '';
    try {
      token = wx.getStorageSync('token');
    } catch (e) {
      console.error('获取token失败', e);
    }

    // 调用真实的场景化标签接口
    wx.request({
      url: 'http://localhost/dev-api/recipes/tags/list',
      method: 'GET',
      header: {
        'Authorization': token,
        'Content-Type': 'application/json'
      },
      data: {
        pageSize: 10, // 获取前10个场景标签
        status: 0, // 只获取启用的标签
        sort: 0
      },
      success: (res) => {
        wx.hideLoading();
        if (res.data.code === 200 && res.data && res.data.rows) {
          // 处理场景标签数据
          const sceneTags = (res.data.rows || []).map(tag => ({
            tagId: tag.id,
            title: tag.name || '未知标签',
            imageUrl: tag.coverImg 
              ? `http://localhost:8080${tag.coverImg}` 
              : 'https://picsum.photos/300/200?random=tag',
            sort: tag.sort || 999
          }));

          // 按sort字段排序
          sceneTags.sort((a, b) => a.sort - b.sort);

          this.setData({
            hotRecipes: sceneTags
          });
        } else {
          // 如果接口失败，使用默认数据
          this.setDefaultHotRecipes();
        }
      },
      fail: (err) => {
        wx.hideLoading();
        console.error('获取场景化标签失败:', err);
        // 使用默认数据
        this.setDefaultHotRecipes();
      }
    });
  },

  // 设置默认热门食谱数据
  setDefaultHotRecipes() {
    const defaultRecipes = [
      {
        id: 1,
        title: '轻食餐',
        imageUrl: 'https://picsum.photos/300/200?random=10',
        tagId: 1,
        sort: 1
      },
      {
        id: 2,
        title: '生日聚会',
        imageUrl: 'https://picsum.photos/300/200?random=11',
        tagId: 2,
        sort: 2
      },
      {
        id: 3,
        title: '中餐',
        imageUrl: 'https://picsum.photos/300/200?random=12',
        tagId: 3,
        sort: 3
      },
      {
        id: 4,
        title: '西餐',
        imageUrl: 'https://picsum.photos/300/200?random=13',
        tagId: 4,
        sort: 4
      }
    ];

    this.setData({
      hotRecipes: defaultRecipes
    });
  },

  // 搜索点击
  onSearchTap() {
    wx.navigateTo({
      url: '/index/pages/search/search'
    });
  },

  // 轮播图点击
  onBannerTap(e) {
    const id = e.currentTarget.dataset.id;
    console.log('轮播图点击，ID:', id);
    wx.navigateTo({
      url: `/index/pages/detail/detail?id=${id}&type=banner`
    });
  },

  // 热门食谱点击（场景化标签）
  onHotRecipeTap(e) {
    const tagId = e.currentTarget.dataset.tagId;
    const title = e.currentTarget.dataset.title;
    console.log('热门食谱点击，标签ID:', tagId, '标题:', title);
   
    // 跳转到菜谱列表页面，显示该标签下的菜谱
    wx.navigateTo({
      url: `/pages/recipe-list/recipe-list?tagId=${tagId}&tagName=${title}&type=scene`
    });
  },

  // 更多推荐点击
  onRecommendTap(e) {
    const id = e.currentTarget.dataset.id;
    console.log('更多推荐点击，ID:', id);
    wx.navigateTo({
      url: `/index/pages/detail/detail?id=${id}&type=recommend`
    });
  },

  // 加载推荐数据（实现分页查询）
  loadRecommendData() {
    if (this.data.loading || !this.data.hasMore) return;

    this.setData({ 
      loading: true
    });

    // 获取token
    let token = '';
    try {
      token = wx.getStorageSync('token');
    } catch (e) {
      console.error('获取token失败', e);
    }

    // 构建分页请求数据
    const data = {
      pageNum: this.data.page,
      pageSize: this.data.pageSize,
      status:1
    };

    wx.request({
      url: 'http://localhost/dev-api/recipes/recipes/list',
      method: 'GET',
      header: {
        'Authorization': token,
        'Content-Type': 'application/json'
      },
      data: data,
      success: (res) => {
        this.setData({ loading: false });
        
        if (res.data.code === 200) {
          const { rows, total } = res.data;
          const newRecipes = rows || [];
          
          // 处理菜谱数据
          const processedRecipes = newRecipes.map(recipe => {
            // 根据媒体类型处理封面图
            let imageUrl = 'https://picsum.photos/300/200?random=default';
            if (recipe.mediaType === 2) {
              imageUrl = recipe.videoDescription 
                ? `http://localhost:8080${recipe.videoDescription}` 
                : 'https://picsum.photos/300/200?random=video';
            } else if (recipe.mediaType === 1) {
              imageUrl = recipe.coverUrl 
                ? `http://localhost:8080${recipe.coverUrl}` 
                : 'https://picsum.photos/300/200?random=image';
            }

            return {
              id: recipe.id,
              title: recipe.title || '未知菜谱',
              imageUrl: imageUrl,
              authorName: recipe.users?.nickname || '未知用户',
              authorAvatar: recipe.users?.avatarUrl 
                ? `http://localhost:8080${recipe.users.avatarUrl}` 
                : 'https://picsum.photos/60/60?random=author',
              collectCount: recipe.collectCount || 0,
              likeCount: recipe.likeCount || 0,
              viewCount: recipe.viewCount || 0,
              mediaType: recipe.mediaType || 1
            };
          });

          const totalPages = Math.ceil(total / this.data.pageSize);
          const hasMore = this.data.page < totalPages;

          if (this.data.page === 1) {
            this.setData({
              recommendList: processedRecipes,
              page: this.data.page + 1,
              hasMore: hasMore
            });
          } else {
            this.setData({
              recommendList: [...this.data.recommendList, ...processedRecipes],
              page: this.data.page + 1,
              hasMore: hasMore
            });
          }
        } else {
          // 如果API调用失败，使用模拟数据
          this.loadMockRecommendData();
        }
      },
      fail: (err) => {
        this.setData({ loading: false });
        console.error('获取推荐菜谱失败:', err);
        this.loadMockRecommendData();
      }
    });
  },

  // 加载模拟推荐数据（降级处理）
  loadMockRecommendData() {
    const mockData = this.generateMockData();
    
    const totalMockPages = 3;
    const hasMore = this.data.page < totalMockPages;

    if (this.data.page === 1) {
      this.setData({
        recommendList: mockData,
        page: this.data.page + 1,
        hasMore: hasMore
      });
    } else {
      this.setData({
        recommendList: [...this.data.recommendList, ...mockData],
        page: this.data.page + 1,
        hasMore: hasMore
      });
    }
  },

  // 生成模拟数据
  generateMockData() {
    const baseId = (this.data.page - 1) * this.data.pageSize;
    const data = [];
    
    const titles = [
      '轻食减脂谷物饭',
      '黑森林巧克力蛋糕',
      '彩虹水果沙拉',
      '燕麦香蕉谷物碗',
      '减脂午饭',
      '超满足汉堡',
      '健康轻食',
      '美味甜点',
      '营养早餐',
      '精致午餐'
    ];
    
    const authors = [
      '不会做饭的西瓜',
      '美食达人小王',
      '健康生活家',
      '甜点大师',
      '营养师小李'
    ];
    
    for (let i = 0; i < this.data.pageSize; i++) {
      data.push({
        id: baseId + i + 1,
        title: titles[i % titles.length],
        imageUrl: `https://picsum.photos/300/200?random=${baseId + i + 30}`,
        authorName: authors[i % authors.length],
        authorAvatar: `https://picsum.photos/60/60?random=${baseId + i + 30}`,
        collectCount: Math.floor(Math.random() * 100) + 10,
        likeCount: Math.floor(Math.random() * 50) + 5
      });
    }
    
    return data;
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.setData({
      recommendList: [],
      page: 1,
      hasMore: true
    });
    
    this.loadHotRecipes();
    this.loadRecommendData();
    
    setTimeout(() => {
      wx.stopPullDownRefresh();
    }, 1000);
  },

  // 上拉加载更多
  onReachBottom() {
    this.loadRecommendData();
  }
});